#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio_ext.h> /* Necessario para a funcao "__fpurge" */
#include <ctype.h> /* Necessario para a funcao "isdigit" */

#define tam_titulo 200
#define tam_tipo 100
#define tam_autor 125
#define tam_ano 4
#define tam_valor 12
#define tam_imagem 9
#define tam_total 450

typedef struct No_PK {
	char titulo[tam_titulo+1]; /* estrutura para o arquivo/vetor com as chaves primarias */
	int nrr;
} No_PK;

typedef No_PK *pNo_PK;

/* funcao auxliar para o qsort/bsearch */
int compara (pNo_PK obra1, pNo_PK obra2 );

/* menu de opcao de consultas */
void menu_consulta(pNo_PK obras, int tamanho, pNo_PK sk_titulo, pNo_PK sk_tipo, pNo_PK sk_autor, pNo_PK sk_ano, int ttitulo, int ttipo, int tautor, int tano, int tam_nrr);

/* funcao que escreve os dados da obra (menos imagem) no arquivo HTML */
int escreve(FILE *origem, FILE *destino, char texto[], int tamanho, int atual);

/* funcao que faz aparecer a imagem no arquivo HTML */
void escreve_img(FILE *origem, FILE *destino, char texto[], int tamanho, int atual);

/* escreve as tags que iniciam o codigo HTML */
void inicio_HTML(FILE *arq);

/* arquivo que coordena a escrita do(s) resultado(s) da busca no arquivo HTML.
	Chama a funcao procura para isso */
void meio_HTML (FILE *resultado, int nrr);

/* escreve as tags que finalizam o codigo HTML */
void fim_HTML (FILE *arq);

void procura_tit(char *titulo, pNo_PK obras, pNo_PK SK, int tamanho, int tam_nrr);
void procura_tipo(char *titulo, pNo_PK obras, pNo_PK SK, int tamanho, int tam_nrr);
void procura_autor(char *titulo, pNo_PK obras, pNo_PK SK, int tamanho, int tam_nrr);
void procura_ano(char *titulo, pNo_PK obras, pNo_PK SK, int tamanho, int tam_nrr);

/* procura (usando bsearch) um titulo na lista de obras e cria um arquivo HTML com o resultado */
void procura_aux(char *titulo, pNo_PK obras, pNo_PK SK,  int tamanho, FILE *arquivo, int tam_nrr);

/* lista todas as obras em um arquivo HTML */
void lista_HTML(pNo_PK obras, int tamanho);

